Distributed System 分布式系统 LB 负载均衡
功能
LB 是分布式系统另外一个关键(Critial)的组件。
- 它有助于将流量分散到服务器集群(A Cluster of Servers)中,以提高应用程序、网站或数据库的响应能力和可用性。
- LB 还在分发请求时跟踪所有资源的状态。
- 如果服务器不能接受新的请求,或者没有响应,或者错误率升高,LB 将停止向这样的服务器发送流量。
位置
LB 通常位于客户端和服务器之间。
为了充分利用(Utilize)扩容性(Scalability)和冗余(Redundancy),也可以在三个地方添加 LB:
- 用户和 Web 服务器之间
- Web 服务器和一个内部平台层(例如应用服务器、缓存服务器)之间
- 内部平台层和数据库之间
算法
LB 根据两个关键因素选择服务器
- 确保他们选择的服务器能响应请求
- 健康检查(Health Checks)
- 定期尝试连接后端服务器,确保服务器在监听
- 如果一台服务器故障,自动从服务器池中移除
- 健康检查(Health Checks)
- 使用预先配置的算法从一组健康的服务器中选择一个
- 最少连接算法(Least Connection Method)
- 适用于很多长连接分布不均匀的场景
- 最小响应时间算法(Least Response Time Method)
- 最小带宽算法(Least Bandwidth Method)
- 轮询算法(Round Robin Method)
- 所有服务器形成一个圈,每次顺时针选择下一台服务器
- 适用于没有很多长连接的场景
- 加权轮询算法(Weighted Round Robin Method)
- 权重高的服务器先分配,权重一样的形成圈,顺时针选择
- IP 哈希(IP Hash)
- 通过 IP 哈希到一台服务器,对于要维护用户 Session 的场景有用
- 最少连接算法(Least Connection Method)
冗余
- 为了防止单点失败,需要多一台 LB 服务器,两台服务器互相监控
- 如果主 LB 服务器宕机,从服务器接管
优点
- 用户体验更快、不中断(Uninterrupted)的服务
- 用户不需要等一台故障的服务器完成,他们的请求会立刻被传递到一个更可用的服务器
- 服务提供商体验更少的停机时间(DownTime)和更高的吞吐量(Throughput)
- 即使一台服务器满负载也不会影响中断用户体验,LB 会切换到另外一个
- LB 让系统管理员可以更容易地控制进来的流量,更少的故障和负载重的组件
- 智能 LB 提供预测分析,可以在流量瓶颈发生前发现。这是自动化的关键,并有助于推动商业决策